﻿using System.Collections.Generic;
using App.Modelo.Interfaces;

namespace App.SolInf.Reportes
{
    public class ModuloSolInfReportes : ContenedorModulo, ISessionActual
    {
        private static volatile ModuloSolInfReportes _instance = null;

        private static readonly object padlock = new object();

        public static ModuloSolInfReportes Instance
        {
            get
            {
                if (_instance == null)
                {
                    lock (padlock)
                    {
                        if (_instance == null)
                            _instance = new ModuloSolInfReportes();
                    }
                }
                return _instance;
            }
        }


        public IUsuario UsuarioActual { get; set; }

        public IDictionary<string, IComando> CatalogoComandos
        {
            get { return ModuloPrincipal.CatalogoComandos; }
        }

        public override void Init(IModuloPrincipal moduloPrincipal)
        {
            ModuloPrincipal = moduloPrincipal;

            var comandos = moduloPrincipal.CatalogoComandos;

            comandos.Add("InformeStock/ver", new Comando(VerInformeStock));
            comandos.Add("InformeVendedores/ver", new Comando(VerInformeVendedor));
            comandos.Add("RankingProductos/ver", new Comando(RankingProductos));
            comandos.Add("RankingClientes/ver", new Comando(RankingClientes));
            comandos.Add("ProductosStockMin/ver", new Comando(ProductosStockMin));
        }

        private void VerInformeStock()
        {
            var f = new InformeStockReporte();
            f.Ver();
        }

        private void VerInformeVendedor()
        {
            var f = new InformeVendedorReporte();
            f.Ver();
        }
        private void RankingProductos()
        {
            var f = new RankingProductos();
            f.Ver();
        }
        private void RankingClientes()
        {
            var f = new RankingClientes();
            f.Ver();
        }

        private void ProductosStockMin()
        {
            var f = new ProductosStockMinReporte();
            f.Ver();
        }
        
    }
}

    